/*
* leetcode 23. 合并 K 个升序链表
*
给你一个链表数组，每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中，返回合并后的链表。
* */
/*
* */
import java.util.*;
class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        int n=lists.length,count=0,min,mindex=0;
        ListNode ans=new ListNode(-1);
        ListNode p=ans;
        PriorityQueue<ListNode> heap=new PriorityQueue<>((a,b)->a.val-b.val);
        for(int i=0;i<n;i++){
            if(lists[i]!=null)heap.offer(lists[i]);
        }
        while(!heap.isEmpty()){
            ListNode node=heap.poll();
            p.next=node;
            p=node;
            if(node.next!=null)heap.offer(node.next);
        }

        return ans.next;

    }
}

class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}